[Chapter 17] 17.3 Rule Set 0
Author: Bryan Costales & Eric Allman
Date: 1999-01-06T18:40:23Z

#

| Chapter 17 The Hub's Complex Rules |

## 17.3 Rule Set 0

Rule set 0 checks for errors and selects delivery agents. First it disposes of the null address:

>     R<@>                    $#local $: <@>

Recall from Section 17.1.1.3, "Handle null address" that the null address needs to be disposed of locally.

Next a whole series of error conditions need to be detected before they can lead to harm:

>     R$* : $* ; <@>    $#error $@ 5.1.3 $: "list:; syntax illegal for recipient addresses"
>     R<@ $+>           $#error $@ 5.1.1 $: "user address required"
>     R$* <$* : $* > $*  $#error $@ 5.1.1 $: "colon illegal in host name part"
>     R$* < @ . > $*    $#error $@ 5.1.2 $: "invalid host name"

First, addresses are checked to see whether they are of the `List:;` form (see Section 17.1.2.1, "A rule to handle List:;") and, if so, are considered errors. Then the focused address is screened for missing user parts, colons in the host name, and unresolvable hostnames. Any such addresses are rejected as errors.

The rest of rule set 0 selects delivery agents. It can be simple or complex depending on your specific needs. In its simplest form, it detects local addresses and network mail:

>     R$+ < @ $=w . >       $#local $: $1                           regular local name
>     R$* < @ $*    > $*    $#smtp $@ $2 $: $1 < @ $2 > $3          user@host.domain

Rule set 0 can also do mailertable lookups (see Section 19.6.14) and forward to a hub:

>     R< $+ > $*              $: < $(mailertable $1 $) > $2   lookup
>     R$* < @ $* > $*         $: $>95 < $S > $1 < @ $2 > $3   glue on smarthost name

Note that these rules would not be grouped right next to each other. We presented them like this just to give you the flavor of a rule set 0, without the details. Leap ahead to Section 29.6, "Rule Set 0" if you hunger for more.

17.2 Rule Set 96 |  | 17.4 Rule Set 4